home *** CD-ROM | disk | FTP | other *** search
/ Turnbull China Bikeride / Turnbull China Bikeride - Disc 2.iso / STUTTGART / LANG / C / GCC / V2-4-5 / GPPLIBSR00 / cc / SFile < prev    next >
Text File  |  1993-12-08  |  1KB  |  59 lines

  1. /* 
  2. Copyright (C) 1988 Free Software Foundation
  3.     written by Doug Lea (dl@rocky.oswego.edu)
  4.  
  5. This file is part of the GNU C++ Library.  This library is free
  6. software; you can redistribute it and/or modify it under the terms of
  7. the GNU Library General Public License as published by the Free
  8. Software Foundation; either version 2 of the License, or (at your
  9. option) any later version.  This library is distributed in the hope
  10. that it will be useful, but WITHOUT ANY WARRANTY; without even the
  11. implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
  12. PURPOSE.  See the GNU Library General Public License for more details.
  13. You should have received a copy of the GNU Library General Public
  14. License along with this library; if not, write to the Free Software
  15. Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
  16. */
  17.  
  18. #ifdef __GNUG__
  19. #pragma implementation "SFile.h"
  20. #endif
  21. #include "SFile.h"
  22.  
  23. SFile::SFile(const char *filename, int size, int mode, int prot)
  24. : fstream(filename, mode, prot)
  25.   sz = size; 
  26. }
  27.  
  28. SFile::SFile(int fd, int size)
  29. : fstream(fd)
  30.   sz = size; 
  31. }
  32.  
  33. void SFile::open(const char *name, int size, int mode, int prot)
  34. {
  35.     fstream::open(name, mode, prot);
  36.     sz = size;
  37. }
  38.  
  39. SFile& SFile::get(void* x)
  40. {
  41.     read(x, sz);
  42.     return *this;
  43. }
  44.  
  45. SFile& SFile::put(void* x)
  46. {
  47.     write(x, sz);
  48.     return *this;
  49. }
  50.  
  51. SFile& SFile::operator[](long i)
  52. {
  53.     if (rdbuf()->seekoff(i * sz, ios::beg) == EOF)
  54.     set(ios::badbit);
  55.     return *this;
  56. }
  57.